import java.util.HashMap;

public class mapCache {
    //用于缓冲数据Map
    private HashMap<String, Object> cacheMap = new HashMap<String, Object>();
    //时间key
    private final static String TIME_KEY = "cateTime";
    //数据key
    private final static String DATE_KEY = "cateList";
    //缓冲时间1天
    private final static long EXPIRATIONTIME = 1000 * 60 * 60 * 24;
    /**
     * 需要查询的Object数据
     * 返回true:走缓存
     * 返回false:走数据库
     */
    public Object queryList() {
        //调用isInvalid方法,传入时间key,数据key
        if(isInvalid(TIME_KEY,DATE_KEY)){
            return  cacheMap.get(DATE_KEY);
        }
        //"new"=执行查询逻辑
        Object a = "new";
        //将查出来的数据放入map
        cacheMap.put(DATE_KEY, a);
        //设置缓存时间
        cacheMap.put(TIME_KEY, System.currentTimeMillis() + EXPIRATIONTIME);
        return  a;
    }

    /*
     * 是否过期
     */
    private boolean isInvalid(String timeKey,String dataKey){
        //如果时间key为null或者map里没这个key就查数据库
        if (timeKey == null || !cacheMap.containsKey(timeKey)){
            return false;
        }
        //如果当前时间大于缓存过期时间就移除map里的数据key
        if(System.currentTimeMillis() > ((Long) cacheMap.get(timeKey)).longValue()){
            cacheMap.remove(dataKey);
            return false;
        }
        return true;
    }

}
